package com.example.e_comm.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.e_comm.entity.Permission;

import java.util.List;
import java.util.Set;

public interface PermissionService extends IService<Permission> {
    List<Permission> getPermissionsByPage(Page<Permission> page);

    /**
     * 分页查询权限列表
     * @param page
     * @return 符合条件的权限分页列表
     */
    List<Permission> getAllPermissionsByPage(Page<Permission> page);
    /**
     * 根据条件分页查询权限列表
     * @param page
     * @param keyword
     * @return 符合条件的权限分页列表
     */

    IPage<Permission> getPermissionsByPageWithCondition(Page<Permission> page, String keyword);
    /**
     * 根据用户ID获取权限列表
     * @param userId
     * @return 符合条件的权限列表
     */

    List<Permission> getPermissionsByUserId(Long userId);
    /**
     * 根据角色ID获取权限列表
     * @param roleId
     * @return 符合条件的权限列表
     */
    List<Permission> getPermissionsByRoleId(Long roleId);
    /**
     * 根据用户ID获取权限编码列表
     * @param userId
     * @return 符合条件的权限编码列表
     */
    Set<String> getPermissionCodesByUserId(Long userId);
    /**
     * 根据角色ID获取权限编码列表
     * @param roleId
     * @return 符合条件的权限编码列表
     */
    Set<String> getPermissionCodesByRoleId(Long roleId);

    Set<String> getPermissionsByUserIdSet(Set<Long> userId);

    Set<String> getPermissionsByRoleIdSet(Set<Long> roleId);
    /**
     * 创建权限
     * @param permission
     * @return 创建的权限
     */

}
